package com.briup.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import java.util.Date;

/**
 * Spring配置类，在配置类中可以指定扫描的包，以及其他配置信息，
 * 只需要在类上添加@Configuration注解即可表示为Spring配置类，
 * 并在类上添加@ComponentScan注解指定扫描的包，如此就能
 * 扫描指定包下的所有类，并且将标注了@Component、@Controller、@Service、@Repository等注解的类
 * 注册为Bean实例，默认扫描的包为配置类所在的包。
 */
@Configuration
// 如果在@ComponentScan注解中不指定扫描的包，默认扫描的包为配置类所在的包
@ComponentScan("com.briup")
public class SpringConfig {

    // 在配置文件中可以通过@Bean注解标注方法，从而将第三方的Bean实例注册到IOC容器中
    // @Bean注解只能标注在@Configuration注解标注的类中，
    // 否则就会报错：NoSuchBeanDefinitionException
    @Bean
    public Date userService() {
        return new Date();
    }

    // @Bean注解默认的id为方法名，也可以通过@Bean注解的name属性指定id
    // 如果存在多个标注了@Bean注解的方法同名，那么IOC容器就会报错：
    // NoUniqueBeanDefinitionException
    /*@Bean(name = "localDateTime")
    public LocalDateTime localDateTime() {
        return LocalDateTime.now();
    }*/
}
